#ifndef __TIME_H__
#define __TIME_H__

namespace cox {
	// namespace time {
	struct TimeVal {
		TimeVal(long long s = 0, long long ms = 0, long long us = 0);
		long long toMs(void) const;
		long long s;  /* 秒 */
		long long ms; /* 毫秒 */
		long long us; /* 微秒 */
	};

	bool      operator<(const TimeVal &tv1, const TimeVal &tv2);
	bool      operator<=(const TimeVal &tv1, const TimeVal &tv2);
	bool      operator<(const TimeVal &tv, const long long ms);
	bool      operator>(const TimeVal &tv1, const TimeVal &tv2);
	bool      operator>=(const TimeVal &tv1, const TimeVal &tv2);
	bool      operator>(const TimeVal &tv, const long long ms);
	bool      operator==(const TimeVal &tv1, const TimeVal &tv2);
	void      SetDeltaMs(long long ms);
	long long GetTick(void);
	long long GetTimeMs(bool withDeltaMs = false);

	TimeVal GetMoNoTime();
	TimeVal GetTime(bool withDeltaMs = false);
	TimeVal operator+(const TimeVal &tv1, const TimeVal &tv2);
	TimeVal operator+(const TimeVal &tv, const long long &ms);
	TimeVal operator-(const TimeVal &tv1, const TimeVal &tv2);
	TimeVal operator-(const TimeVal &tv, const long long &ms);
	// } // namespace time
} // namespace cox
#endif
